{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "20d1844d-56a1-4d97-9098-04cd38614402",
   "metadata": {},
   "source": [
    "# Recursive forecasting example"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c7e22b9-366f-4754-ba9c-c642f5b6f291",
   "metadata": {},
   "source": [
    "[Feature Engineering for Time Series Forecasting](https://www.trainindata.com/p/feature-engineering-for-forecasting)\n",
    "\n",
    "In this notebook we will show how to use trend features in a recursive forecasting workflow where we also have features built from the target (e.g., lag & window features)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9a86e7d9-212c-4d82-b896-20a4e078c336",
   "metadata": {},
   "outputs": [],
   "source": [
    "import datetime\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "sns.set_context(\"talk\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c51d42e9-8edd-416d-8ac1-9a77792a9ed8",
   "metadata": {},
   "source": [
    "# Data set synopsis"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6e964ccb-f3fd-4e88-a08a-b82e6fc56074",
   "metadata": {},
   "source": [
    "The air passengers dataset is the monthly totals of international airline passengers, from 1949 to 1960, in units of 1000s. \n",
    "\n",
    "For instructions on how to download, prepare, and store the dataset, refer to notebook number 5, in the folder \"01-Create-Datasets\" from this repo."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0b41fdf4-7f04-4fa6-ae61-5831d3b36473",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(\n",
    "    \"../Datasets/example_air_passengers.csv\",\n",
    "    parse_dates=[\"ds\"],\n",
    "    index_col=[\"ds\"],\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea3cc441-df77-439b-a88d-e74c334635c3",
   "metadata": {},
   "source": [
    "## Plot the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e096e012-faba-477d-b0b3-6d2a2aac6407",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=[10, 5])\n",
    "data.plot(y=\"y\", marker=\".\", figsize=[10, 5], legend=None, ax=ax)\n",
    "ax.set_xlabel(\"Time\")\n",
    "ax.set_ylabel(\"Air passengers (1000s)\")\n",
    "ax.set_title(\"Air passenger numbers\")\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d20fba2-1d7b-472c-a73a-d67e55173bb7",
   "metadata": {},
   "source": [
    "# Let's build some forecasts!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e835157-d0e9-4571-81dc-6fa818ffb032",
   "metadata": {},
   "source": [
    "Let's build a recursive forecast and see how our trend feature can help!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "738606c1-df44-4f9f-b4d7-4e5a1f22d234",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Let's ensure all sklearn transformers output pandas dataframes\n",
    "from sklearn import set_config\n",
    "from sklearn.base import clone\n",
    "from sklearn.pipeline import make_pipeline, make_union\n",
    "from sklearn.preprocessing import MinMaxScaler, PolynomialFeatures\n",
    "from sktime.transformations.series.summarize import WindowSummarizer\n",
    "from sktime.transformations.series.time_since import TimeSince\n",
    "\n",
    "set_config(transform_output=\"pandas\")  # Upgrade to scikit-learn 0.12\n",
    "                                       # for this feature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "130d5c18-2870-4a1a-89af-c09bdff6b775",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ds</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1949-01-01</th>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-02-01</th>\n",
       "      <td>118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-03-01</th>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-04-01</th>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-05-01</th>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              y\n",
       "ds             \n",
       "1949-01-01  112\n",
       "1949-02-01  118\n",
       "1949-03-01  132\n",
       "1949-04-01  129\n",
       "1949-05-01  121"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = data.copy()\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d292e0e-e5ce-4c5d-b63a-6490a6457b6b",
   "metadata": {},
   "source": [
    "Specify target name."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "25d2262f-c242-409b-93b4-0913f70c3113",
   "metadata": {},
   "outputs": [],
   "source": [
    "target = [\"y\"]  # Note: it's in a list.\n",
    "# This ensures we'll get\n",
    "# a dataframe when using df.loc[:, target]\n",
    "# rather than a pandas Series.\n",
    "# This can also be useful if we have\n",
    "# multiple targets."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3dac1165-9d17-4648-b7ed-927ed660de3d",
   "metadata": {},
   "source": [
    "Prepare our transformers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "002c3527-412a-4dc4-b359-1c829a8a4789",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Polynomial time features\n",
    "time_feats = make_pipeline(\n",
    "    TimeSince(freq=\"MS\"),\n",
    "    PolynomialFeatures(degree=2, include_bias=False)\n",
    ")\n",
    "\n",
    "\n",
    "# Features computed from the target.\n",
    "# Compute lag and window features.\n",
    "lag_window_feats = WindowSummarizer(\n",
    "    lag_feature={\n",
    "        \"lag\": [1, 2, 3, 12],  # Lag features.\n",
    "        \"mean\": [[1, 12]],  # [[lag, window size]]\n",
    "    },\n",
    "    target_cols=target,\n",
    "    truncate=\"bfill\",  # Backfill missing values from lagging and windowing.\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d0525e4-b9a3-4977-88e6-cc213e4d8a9e",
   "metadata": {},
   "source": [
    "Create a pipeline to create all our features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "8224a415-81da-4471-9e65-53f0ed4b7ed4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create features derived independent of one another\n",
    "pipeline = make_union(time_feats, lag_window_feats)\n",
    "\n",
    "# Apply min-max scaling to all the features\n",
    "pipeline = make_pipeline(pipeline, MinMaxScaler())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b74e1d09-c547-42dc-b736-f3e55d756749",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;featureunion&#x27;,\n",
       "                 FeatureUnion(transformer_list=[(&#x27;pipeline&#x27;,\n",
       "                                                 Pipeline(steps=[(&#x27;timesince&#x27;,\n",
       "                                                                  TimeSince(freq=&#x27;MS&#x27;)),\n",
       "                                                                 (&#x27;polynomialfeatures&#x27;,\n",
       "                                                                  PolynomialFeatures(include_bias=False))])),\n",
       "                                                (&#x27;windowsummarizer&#x27;,\n",
       "                                                 WindowSummarizer(lag_feature={&#x27;lag&#x27;: [1,\n",
       "                                                                                       2,\n",
       "                                                                                       3,\n",
       "                                                                                       12],\n",
       "                                                                               &#x27;mean&#x27;: [[1,\n",
       "                                                                                         12]]},\n",
       "                                                                  target_cols=[&#x27;y&#x27;],\n",
       "                                                                  truncate=&#x27;bfill&#x27;))])),\n",
       "                (&#x27;minmaxscaler&#x27;, MinMaxScaler())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">Pipeline</label><div class=\"sk-toggleable__content\"><pre>Pipeline(steps=[(&#x27;featureunion&#x27;,\n",
       "                 FeatureUnion(transformer_list=[(&#x27;pipeline&#x27;,\n",
       "                                                 Pipeline(steps=[(&#x27;timesince&#x27;,\n",
       "                                                                  TimeSince(freq=&#x27;MS&#x27;)),\n",
       "                                                                 (&#x27;polynomialfeatures&#x27;,\n",
       "                                                                  PolynomialFeatures(include_bias=False))])),\n",
       "                                                (&#x27;windowsummarizer&#x27;,\n",
       "                                                 WindowSummarizer(lag_feature={&#x27;lag&#x27;: [1,\n",
       "                                                                                       2,\n",
       "                                                                                       3,\n",
       "                                                                                       12],\n",
       "                                                                               &#x27;mean&#x27;: [[1,\n",
       "                                                                                         12]]},\n",
       "                                                                  target_cols=[&#x27;y&#x27;],\n",
       "                                                                  truncate=&#x27;bfill&#x27;))])),\n",
       "                (&#x27;minmaxscaler&#x27;, MinMaxScaler())])</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">featureunion: FeatureUnion</label><div class=\"sk-toggleable__content\"><pre>FeatureUnion(transformer_list=[(&#x27;pipeline&#x27;,\n",
       "                                Pipeline(steps=[(&#x27;timesince&#x27;,\n",
       "                                                 TimeSince(freq=&#x27;MS&#x27;)),\n",
       "                                                (&#x27;polynomialfeatures&#x27;,\n",
       "                                                 PolynomialFeatures(include_bias=False))])),\n",
       "                               (&#x27;windowsummarizer&#x27;,\n",
       "                                WindowSummarizer(lag_feature={&#x27;lag&#x27;: [1, 2, 3,\n",
       "                                                                      12],\n",
       "                                                              &#x27;mean&#x27;: [[1,\n",
       "                                                                        12]]},\n",
       "                                                 target_cols=[&#x27;y&#x27;],\n",
       "                                                 truncate=&#x27;bfill&#x27;))])</pre></div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><label>pipeline</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">TimeSince</label><div class=\"sk-toggleable__content\"><pre>TimeSince(freq=&#x27;MS&#x27;)</pre></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">PolynomialFeatures</label><div class=\"sk-toggleable__content\"><pre>PolynomialFeatures(include_bias=False)</pre></div></div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><label>windowsummarizer</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">WindowSummarizer</label><div class=\"sk-toggleable__content\"><pre>WindowSummarizer(lag_feature={&#x27;lag&#x27;: [1, 2, 3, 12], &#x27;mean&#x27;: [[1, 12]]},\n",
       "                 target_cols=[&#x27;y&#x27;], truncate=&#x27;bfill&#x27;)</pre></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">MinMaxScaler</label><div class=\"sk-toggleable__content\"><pre>MinMaxScaler()</pre></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "Pipeline(steps=[('featureunion',\n",
       "                 FeatureUnion(transformer_list=[('pipeline',\n",
       "                                                 Pipeline(steps=[('timesince',\n",
       "                                                                  TimeSince(freq='MS')),\n",
       "                                                                 ('polynomialfeatures',\n",
       "                                                                  PolynomialFeatures(include_bias=False))])),\n",
       "                                                ('windowsummarizer',\n",
       "                                                 WindowSummarizer(lag_feature={'lag': [1,\n",
       "                                                                                       2,\n",
       "                                                                                       3,\n",
       "                                                                                       12],\n",
       "                                                                               'mean': [[1,\n",
       "                                                                                         12]]},\n",
       "                                                                  target_cols=['y'],\n",
       "                                                                  truncate='bfill'))])),\n",
       "                ('minmaxscaler', MinMaxScaler())])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6decf02c-1a0a-45d0-9fec-07255f232a17",
   "metadata": {},
   "source": [
    "Let's check how our feature engineering pipeline behaves."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "8071a5af-cfb4-4a2b-85d8-d0e065f53fa3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time_since_1949-01-01 00:00:00</th>\n",
       "      <th>time_since_1949-01-01 00:00:00^2</th>\n",
       "      <th>y_lag_1</th>\n",
       "      <th>y_lag_2</th>\n",
       "      <th>y_lag_3</th>\n",
       "      <th>y_lag_12</th>\n",
       "      <th>y_mean_1_12</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ds</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1949-01-01</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.017582</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-02-01</th>\n",
       "      <td>0.006993</td>\n",
       "      <td>0.000049</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.017582</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-03-01</th>\n",
       "      <td>0.013986</td>\n",
       "      <td>0.000196</td>\n",
       "      <td>0.027027</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.017582</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-04-01</th>\n",
       "      <td>0.020979</td>\n",
       "      <td>0.000440</td>\n",
       "      <td>0.054054</td>\n",
       "      <td>0.027027</td>\n",
       "      <td>0.015444</td>\n",
       "      <td>0.017582</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1949-05-01</th>\n",
       "      <td>0.027972</td>\n",
       "      <td>0.000782</td>\n",
       "      <td>0.048263</td>\n",
       "      <td>0.054054</td>\n",
       "      <td>0.027027</td>\n",
       "      <td>0.017582</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1960-08-01</th>\n",
       "      <td>0.972028</td>\n",
       "      <td>0.944838</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.832046</td>\n",
       "      <td>0.710425</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.958303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1960-09-01</th>\n",
       "      <td>0.979021</td>\n",
       "      <td>0.958482</td>\n",
       "      <td>0.969112</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.832046</td>\n",
       "      <td>0.789011</td>\n",
       "      <td>0.969566</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1960-10-01</th>\n",
       "      <td>0.986014</td>\n",
       "      <td>0.972224</td>\n",
       "      <td>0.779923</td>\n",
       "      <td>0.969112</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.665934</td>\n",
       "      <td>0.980350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1960-11-01</th>\n",
       "      <td>0.993007</td>\n",
       "      <td>0.986063</td>\n",
       "      <td>0.689189</td>\n",
       "      <td>0.779923</td>\n",
       "      <td>0.969112</td>\n",
       "      <td>0.567033</td>\n",
       "      <td>0.993290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1960-12-01</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.552124</td>\n",
       "      <td>0.689189</td>\n",
       "      <td>0.779923</td>\n",
       "      <td>0.661538</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>144 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            time_since_1949-01-01 00:00:00  time_since_1949-01-01 00:00:00^2  \\\n",
       "ds                                                                             \n",
       "1949-01-01                        0.000000                          0.000000   \n",
       "1949-02-01                        0.006993                          0.000049   \n",
       "1949-03-01                        0.013986                          0.000196   \n",
       "1949-04-01                        0.020979                          0.000440   \n",
       "1949-05-01                        0.027972                          0.000782   \n",
       "...                                    ...                               ...   \n",
       "1960-08-01                        0.972028                          0.944838   \n",
       "1960-09-01                        0.979021                          0.958482   \n",
       "1960-10-01                        0.986014                          0.972224   \n",
       "1960-11-01                        0.993007                          0.986063   \n",
       "1960-12-01                        1.000000                          1.000000   \n",
       "\n",
       "             y_lag_1   y_lag_2   y_lag_3  y_lag_12  y_mean_1_12  \n",
       "ds                                                               \n",
       "1949-01-01  0.015444  0.015444  0.015444  0.017582     0.000000  \n",
       "1949-02-01  0.015444  0.015444  0.015444  0.017582     0.000000  \n",
       "1949-03-01  0.027027  0.015444  0.015444  0.017582     0.000000  \n",
       "1949-04-01  0.054054  0.027027  0.015444  0.017582     0.000000  \n",
       "1949-05-01  0.048263  0.054054  0.027027  0.017582     0.000000  \n",
       "...              ...       ...       ...       ...          ...  \n",
       "1960-08-01  1.000000  0.832046  0.710425  1.000000     0.958303  \n",
       "1960-09-01  0.969112  1.000000  0.832046  0.789011     0.969566  \n",
       "1960-10-01  0.779923  0.969112  1.000000  0.665934     0.980350  \n",
       "1960-11-01  0.689189  0.779923  0.969112  0.567033     0.993290  \n",
       "1960-12-01  0.552124  0.689189  0.779923  0.661538     1.000000  \n",
       "\n",
       "[144 rows x 7 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline.fit_transform(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "faf8a062-c2be-4d22-9b1f-73be7f52b4f0",
   "metadata": {},
   "source": [
    "Let's reset our feature engineering pipeline."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "22ad95c0-b937-471c-a2ae-fe17ed2d3f2f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# We can use `clone` to return an unfitted version\n",
    "# of the pipeline.\n",
    "pipeline = clone(pipeline)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9445dbf-0c67-4e52-9df7-ffc5ff178ef6",
   "metadata": {},
   "source": [
    "Let's build a recursive forecast."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7c79eb0e-d6e1-40eb-a930-80900822f66f",
   "metadata": {},
   "source": [
    "We'll start with configuring the forecast start time, the number of steps to forecast, and the forecasting horizon, and the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "3e812426-089d-4add-bbb7-8a630e879efd",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import HistGradientBoostingRegressor\n",
    "from sklearn.linear_model import Lasso, LinearRegression, Ridge\n",
    "from sklearn.tree import DecisionTreeRegressor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "fee3871f-b8ca-4063-9272-37c0f71f626a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# --- CONFIG --- #\n",
    "# Define time of first forecast, this determines our train / test split\n",
    "forecast_start_time = pd.to_datetime(\"1955-10-01\")\n",
    "\n",
    "# Define number of steps to forecast.\n",
    "num_of_forecast_steps = 36\n",
    "\n",
    "# Define the model.\n",
    "model = LinearRegression()\n",
    "\n",
    "# Create a list of periods that we'll forecast over.\n",
    "forecast_horizon = pd.date_range(\n",
    "    forecast_start_time, periods=num_of_forecast_steps, freq=\"MS\"\n",
    ")\n",
    "\n",
    "# How much data in the past is needed to create our features\n",
    "look_back_window_size = pd.DateOffset(months=12) # We need the latest 12 time periods\n",
    "                                                 # in our predict dataframe to build our\n",
    "                                                 # window features."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ffaef60-a54d-4d0c-a19b-e4e5202ec896",
   "metadata": {},
   "source": [
    "Let's create our training dataframe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e25af278-6269-4c5f-8c8c-7ff0cd1c01fe",
   "metadata": {},
   "outputs": [],
   "source": [
    "# --- CREATE TRAINING & TESTING DATAFRAME  --- #\n",
    "# Ensure we only have training data up to the start\n",
    "# of the forecast.\n",
    "df_train = df.loc[df.index < forecast_start_time].copy()\n",
    "df_test = df.loc[df.index >= forecast_start_time].copy()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86ce03ee-d702-4787-b57a-c393bcceeab2",
   "metadata": {},
   "source": [
    "Let's compute our `X_train` and `y_train` and fit our model!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "528ab868-ea31-40cf-aafb-410e29fe9eb3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" checked><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearRegression</label><div class=\"sk-toggleable__content\"><pre>LinearRegression()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# --- FEATURE ENGINEERING--- #\n",
    "# Create X_train and y_train\n",
    "y_train = df_train[target]\n",
    "X_train = pipeline.fit_transform(df_train)\n",
    "\n",
    "# --- MODEL TRAINING --- #\n",
    "# Train one-step ahead forecast model\n",
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9bb9e82a-2228-40a7-a73b-9b7a31391cf0",
   "metadata": {},
   "source": [
    "Let's prepare the dataframe that we will pass to `pipeline.transform()` to create `X_test` that we pass to `model.predict()`. This will contain some portion of time series during the training period so we can create any features that require historic data. Let's visualise the process that we are going to set up."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70817399-ed1f-437c-8e92-3deb185a9af5",
   "metadata": {},
   "source": [
    "![](images/recursive_forecasting/Slide1.png)\n",
    "![](images/recursive_forecasting/Slide2.png)\n",
    "![](images/recursive_forecasting/Slide3.png)\n",
    "![](images/recursive_forecasting/Slide4.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "d80416ff-ee17-4e88-a715-86f2a49fb40e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# --- CREATE DYNAMIC PREDICTION DATAFRAME  --- #\n",
    "# We will recursively append our forecasts to this\n",
    "# dataframe and re-compute our lag and window features from the\n",
    "# target in this dataframe. It contains data in both the training period\n",
    "# and forecast period which is needed for some transformers (e.g., lags and windows).\n",
    "look_back_start_time = forecast_start_time - look_back_window_size\n",
    "\n",
    "# Create `df_predict` which has data going as far back\n",
    "# as needed to create features which need past values.\n",
    "df_predict = df_train.loc[look_back_start_time:].copy()\n",
    "\n",
    "# Extend index into forecast horizon\n",
    "df_predict = pd.concat([df_predict, pd.DataFrame(index=forecast_horizon)])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65945f51-985d-46e3-a137-21cd2965312e",
   "metadata": {},
   "source": [
    "Let's recursively create `X_test` and make our predictions and append them to the `df_predict` dataframe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "d629a47f-6f84-4dea-8a53-4e7c4d1fae9c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# --- RECURSIVE FORECASTING LOOP --- #\n",
    "for forecast_time in forecast_horizon:\n",
    "    # Compute features during the forecast horizon\n",
    "    X_test = pipeline.transform(df_predict[:forecast_time])\n",
    "    X_test_ = X_test.loc[[forecast_time]]\n",
    "\n",
    "    # Predict one step ahead.\n",
    "    y_pred = model.predict(X_test_)\n",
    "\n",
    "    # Append forecast to the target variable columnn in our\n",
    "    # dynamic forecast dataframe `df_predict`. This `df_predict`\n",
    "    # is ready for the next iteration where we will re-compute\n",
    "    # features derived from the target such as lags and windows.\n",
    "    df_predict.loc[[forecast_time], target] = y_pred"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45b746cd-135f-46b4-8929-4b7e9ecd391d",
   "metadata": {},
   "source": [
    "Let's retrieve our forecast and actuals during the forecast horizon."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "7931aa06-0468-41dc-b8a0-43dca249500d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# --- GET FORECAST AND TEST VALUES --- #\n",
    "y_forecast = df_predict.loc[forecast_horizon, target]\n",
    "y_test = df_test.loc[forecast_start_time:, target]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8c65617-d15a-48ad-b326-faa79c51b2f8",
   "metadata": {},
   "source": [
    "Let's create predictions on the training set using our one step ahead forecast model. This is useful to plot when debugging models."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "3b511c05-ce4e-449d-b849-2ab556d681d5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# --- CREATE IN-SAMPLE PREDICTIONS--- #\n",
    "y_forecast_train = model.predict(X_train)\n",
    "y_forecast_train = pd.DataFrame(y_forecast_train, index=X_train.index, columns=target)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86ba2671-7108-4a0d-a696-ba88fc844cf1",
   "metadata": {},
   "source": [
    "Let's plot the forecast!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ca0a3741-e4ec-4811-9e64-ce682b83a30f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Forecast with LinearRegression()')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# --- PLOTTING --- #\n",
    "# Plot the forecast.\n",
    "fig, ax = plt.subplots(figsize=[10, 5])\n",
    "\n",
    "# Plot training set.\n",
    "y_train.plot(ax=ax, marker=\".\")\n",
    "# Plot actuals in forecasting horizon.\n",
    "y_test.plot(ax=ax, marker=\".\", alpha=0.6)\n",
    "# Plot forecast.\n",
    "y_forecast.plot(ax=ax)\n",
    "# Plot 1 step forecasts in training data.\n",
    "y_forecast_train.plot(ax=ax)\n",
    "\n",
    "ax.legend([\"train\", \"test\", \"forecast\", \"in-sample forecast\"])\n",
    "ax.set_xlabel(\"Time\")\n",
    "ax.set_ylabel(f\"{target}\")\n",
    "ax.set_title(f\"Forecast with {model}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1463ef4d-077f-4891-be65-7f982e5839ef",
   "metadata": {},
   "source": [
    "Let's look at the model coeffecients."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "12f02fe9-8610-4925-a16a-107e017e35d7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "time_since_1949-01-01 00:00:00       29.946150\n",
       "time_since_1949-01-01 00:00:00^2     10.248312\n",
       "y_lag_1                             117.534675\n",
       "y_lag_2                             -43.921994\n",
       "y_lag_3                               5.653937\n",
       "y_lag_12                            155.117821\n",
       "y_mean_1_12                         -38.114138\n",
       "dtype: float64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Series(index=X_train.columns, data=model.coef_[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b329343e-5055-4a8a-903d-4ec0252239a4",
   "metadata": {},
   "source": [
    "Let's compute the RMSE of this forecast."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "ca4d4411-a247-47cd-882c-bd67833b69f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "26.56875300272184"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Compute error metrics.\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "mean_squared_error(y_test.loc[y_forecast.index], y_forecast, squared=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "705f9886-3682-40b9-a828-fe0dedafc232",
   "metadata": {},
   "source": [
    "We can now implement the time feature to capture trend alongside other features in a recursive forecasting workflow. We can see that the time feature can help capture the trend in the data when using linear models."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2d649f5f-cfbb-43b8-83d1-b168514acb9b",
   "metadata": {},
   "source": [
    "Feel free to change the dates, try different models, and different features!"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "vscode": {
   "interpreter": {
    "hash": "bbdc955b02f52fd4ac17df57dbf42f77a0da462020a5b6d7fea08231d1cd03fe"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
